// 用户相关的类型定义和工具函数

/**
 * 用户状态枚举
 */
export const USER_STATUS = {
    ACTIVE: 'active',
    INACTIVE: 'inactive'
}

/**
 * 创建空的用户注册表单数据
 * @returns {Object} 表单初始数据
 */
export function createEmptyUserForm() {
    return {
        username: '',
        email: '',
        password: '',
        confirmPassword: '',
        fullName: '',
        organization: '',
        department: '',
        phone: '',
        applicationReason: ''
    }
}

/**
 * 格式化用户数据用于显示
 * @param {Object} user - 用户数据
 * @returns {Object} 格式化后的用户数据
 */
export function formatUserForDisplay(user) {
    if (!user) return null

    return {
        ...user,
        displayName: user.full_name || user.username,
        organizationInfo: user.organization && user.department
            ? `${user.organization} - ${user.department}`
            : user.organization || user.department || '',
        isVerified: user.is_verified || false,
        isActive: user.is_active !== false
    }
}

/**
 * 将表单数据转换为用户数据格式
 * @param {Object} formData - 表单数据
 * @returns {Object} 用户数据
 */
export function formDataToUser(formData) {
    const userData = {
        username: formData.username?.trim() || '',
        email: formData.email?.trim() || '',
        full_name: formData.fullName?.trim() || '',
        application_reason: formData.applicationReason?.trim() || ''
    }

    // 可选字段
    if (formData.organization?.trim()) {
        userData.organization = formData.organization.trim()
    }

    if (formData.department?.trim()) {
        userData.department = formData.department.trim()
    }

    if (formData.phone?.trim()) {
        userData.phone = formData.phone.trim()
    }

    return userData
}

/**
 * 检查用户是否有权限执行某个操作
 * @param {Object} user - 用户数据
 * @param {string} action - 操作类型
 * @returns {boolean} 是否有权限
 */
export function checkUserPermission(user, action) {
    if (!user || !user.is_active) {
        return false
    }

    switch (action) {
        case 'create_product':
        case 'edit_own_product':
        case 'delete_own_product':
            return user.is_verified || true // 暂时允许未验证用户也能操作
        default:
            return false
    }
}

/**
 * 获取用户头像 URL
 * @param {Object} user - 用户数据
 * @returns {string} 头像 URL
 */
export function getUserAvatarUrl(user) {
    if (user?.avatar_url) {
        return user.avatar_url
    }

    // 使用用户名首字母作为默认头像
    const initial = user?.full_name?.charAt(0) || user?.username?.charAt(0) || 'U'
    return `https://ui-avatars.com/api/?name=${encodeURIComponent(initial)}&background=1890ff&color=fff&size=40`
}

/**
 * 检查用户名是否可用
 * @param {string} username - 用户名
 * @returns {boolean} 是否可用
 */
export function isUsernameAvailable(username) {
    // 这里应该调用 API 检查用户名是否已存在
    // 暂时返回 true，实际实现时需要异步检查
    return true
}

/**
 * 检查邮箱是否可用
 * @param {string} email - 邮箱地址
 * @returns {boolean} 是否可用
 */
export function isEmailAvailable(email) {
    // 这里应该调用 API 检查邮箱是否已存在
    // 暂时返回 true，实际实现时需要异步检查
    return true
}